1. Field of the Invention
The present invention relates to a method and apparatus for interpolating display pixels in perspective space, and more particularly, to a pixel processor which scales the display parameters of each display pixel in accordance with perspective values in world coordinates assigned to each display pixel.
2. Description of the Prior Art
In three-dimensional graphics systems, three-dimensional images are displayed on a two-dimensional monitor by projecting the three-dimensional image onto a two-dimensional projection plane. The projection plane is then translated to correspond to the display plane of the display monitor. Such a process is performed by first specifying a view volume in world coordinates of an object to be displayed projecting the object onto the projection plane, and then defining a viewport on the view surface. Conceptually, objects in the three-dimensional world are clipped against the three-dimensional view volume and are then projected onto the projection plane. The contents of the display window, which is itself the projection of the view volume onto the projection plane, are then transformed (mapped) into the viewport for display.
In general, the projection of a three-dimensional object is defined by straight projection rays emanating from a center of projection which passes through each point of the object and intersects the projection plane to form the projection. Such planar geometric projections are divided into two basic classes: perspective and parallel. The distinction is in the relation of the center of projection to the projection plane. If the distance from the one to the other is finite, then the projection is perspective, while if the distance is infinite, the projection is parallel. Thus, in order to define a perspective projection, its center of projection must be specified, while for a parallel projection, its direction of projection must be specified.
Perspective projection is generally preferred over parallel projection in graphics systems because perspective projection creates a visual effect similar to that of photographic systems and the human visual system. In other words, when identifying one or more point light sources about an image to be displayed on a graphics monitor, perspective projection may be used with some degree of realism to achieve an apparent three-dimensional image from a two-dimensional display. This realism is caused by an effect known as perspective foreshortening, where the size of the perspective projection of an object varies inversely with the distance of the object from the center of projection of the light source. However, while the perspective projection of objects may be realistic, the effect of this projection makes it difficult to record the exact shape and measurements of the objects since distances cannot be taken from the projection, angles are preserved only on those faces of the object which are parallel to the projection plane, and parallel lines generally do not project as parallel lines.
This latter aspect of perspective projection, namely, that parallel lines do not project as parallel lines, is shown by way of example in FIG. 1. FIG. 1 illustrates the perspective projection of a set of parallel lines into the page. For ease of explanation, the lines of FIG. 1 may be thought of as railroad tracks which extend from a viewer in the foreground to infinity in the background in the direction into the page. The effects of perspective foreshortening are evidenced by the fact that the railroad tracks (which are of course parallel) do not appear to be parallel in the projection plane (in this case, the page) and instead appear to converge to a vanishing point. In 3-D, the parallel lines would meet only at infinity, so the vanishing point can be thought of as the projection of a point at infinity. As a result, although changes in distance along the segment AB are linear in world coordinates, changes in distance in the projection plane are nonlinear. For example, although point C is depicted in the projection plane to be at a distance over half-way from point A to point B, because of perspective foreshortening point C is really only at a point in world coordinates which is a distance approximately one-fourth of the distance from point A toward point B.
If the projection plane for the perspective projection is defined to be normal to the axis into the page (hereinafter the z-axis) at a distance d from the page, for a point P to be projected onto the projection plane the projection of P(x,y,z) with coordinates x.sub.p and y.sub.p may be calculated as: ##EQU1## Multiplying each side by d gives: ##EQU2## Hence, the distance d is just a scale factor applied to x.sub.p and y.sub.p, while the division by z is what causes the perspective projection of more distant objects to be smaller than that of closer objects.
By defining z/d as perspective value W, a general homogeneous point P(x,y,z) may be represented in perspective space as [X Y Z W]=[x y z z/d]. If each side is divided by W (z/d) to return to 3-D, the following results: [X/W Y/W Z/W 1]=[x.sub.p y.sub.p z.sub.p 1]=[x/(z/d) y/(z/d) d 1], which includes the transformed z coordinate of d, the position of the projection plane along the z-axis. Therefore, a three-dimensional image may be represented in two-dimensional perspective space if x, y, z and W are known for an input point to be displayed. This approach is also valid for arbitrary perspective projections since such projections may be normalized in accordance with known techniques.
In prior art 3-D graphics systems, the color of a point on the display screen is determined by first finding the point in the projection plane of the display device and then transforming that point to world space, where the appropriate color is computed. Then, the computed color of that point and any adjacent points are shaded linearly for display by interpolating the points so that smooth color transitions occur. Many such techniques are known and thus will not be described here. However, such prior art pixel rendering systems are not fully accurate in that they do not account for the above-described effects of perspective projections when coloring the points in screen space. In other words, the colors of the displayed pixels are not interpolated so as to account for the effects of perspective foreshortening of the displayed image.
For example, when rendering an image such as that shown in FIG. 1, prior art systems render intermediate points such as point C without considering the effects of nonlinear changes in perspective in screen space on the distances between points A and B. Instead, such prior art systems determine the color of point C by linearly interpolating between points A and B. Thus, if point A were a red pixel and point B were a green pixel, point C would be given a color approximately equal to 1/2 red plus 1/2 green. This occurs because point C is displayed at a point in screen coordinates which is approximately half-way between point A and point B. However, as noted above, point C is actually much closer to point A in real world coordinates and hence should have a redder color much closer to that of A. As a result, prior art rendering systems have not adequately reflected the effects of projections in perspective space on the coloring of the pixels on the display, and accordingly, pixels rendered to the screen have not heretofore accurately reflected the proper color gradations for the displayed objects.
Accordingly, there is a long-felt need in the art for a graphics display system wherein the effects of perspective projections of a 3-D image in world space to a 2-D monitor can be accurately reflected in the rendering of the object to the display screen. The present invention has been designed to meet this need.